///////////////////////////////////////////////////////////////////////////

#ifndef _MP3TRACK_H_
#define _MP3TRACK_H_

///////////////////////////////////////////////////////////////////////////

#ifndef _AUDIOTRACK_H_
#include "audiotrack.h"
#endif

///////////////////////////////////////////////////////////////////////////

#include <mpg123.h>
#include <string>

///////////////////////////////////////////////////////////////////////////


/** MP3 audio track
*
*   @author Roman Pasechnik
*   @since  Jan 05, 2009
*   @since  Jan 05, 2009
*/
class MP3Track : public AudioTrack
{
///////////////////////////////////////////////////////////////////////////

public:

///////////////////////////////////////////////////////////////////////////

    /* Constructor */
    MP3Track( const std::string& _fileName );


    /* Destructor */
    ~MP3Track();


    /** Read the track into memory */
    virtual bool Read();


///////////////////////////////////////////////////////////////////////////

private:

///////////////////////////////////////////////////////////////////////////


    /** Inits mpg123 library */
    static void Init();


    /** Tells if mpg123 is inited */
    static bool m_Inited;


///////////////////////////////////////////////////////////////////////////


    /** MPG123 file handle */
    mpg123_handle* m_FileHandle;


///////////////////////////////////////////////////////////////////////////
};


///////////////////////////////////////////////////////////////////////////

#endif

///////////////////////////////////////////////////////////////////////////

